﻿using Windows7.DesktopIntegration;

namespace maranov.TeaTimer
{
    /// <summary>
    /// Obyčejný Progress Bar umístěný na Hlavním panelu 
    /// </summary>
    public class NormalWindows7TaskbarProgressBar : IWindows7TaskbarProgressBar
    {
        /// <summary>
        /// Obyčejný Progress Bar umístěný na Hlavním panelu 
        /// </summary>
        public NormalWindows7TaskbarProgressBar(System.IntPtr windowHandle)
        {
            WindowHandle = windowHandle;
        }

        /// <summary>
        /// Ochrana proti opakovanému volání.
        /// </summary>
        private bool TaskbarProgressBarRunning = false;

        /// <summary>
        /// Maximální číselná hodnota, které při aktualizacích Bar dosáhne.
        /// </summary>
        private uint TotalValue;

        /// <summary>
        /// Handle okna pro které je Bar zobrazen.
        /// </summary>
        private System.IntPtr WindowHandle;

        public void StartProgressBar(uint totalValue)
        {
            try
            {
                if (!TaskbarProgressBarRunning)
                {
                    TotalValue = totalValue;
                    Windows7Taskbar.SetProgressState(WindowHandle, Windows7Taskbar.ThumbnailProgressState.Normal);
                    TaskbarProgressBarRunning = true;
                }
            }
            catch { }
        }

        public void StopProgressBar()
        {
            try
            {
                if (TaskbarProgressBarRunning)
                {
                    Windows7Taskbar.SetProgressState(WindowHandle, Windows7Taskbar.ThumbnailProgressState.NoProgress);
                    TaskbarProgressBarRunning = false;
                }
            }
            catch { }
        }

        public void UpdateProgressBar(uint currentValue)
        {
            try
            {
                if (TaskbarProgressBarRunning)
                {
                    Windows7Taskbar.SetProgressValue(WindowHandle, currentValue, TotalValue);
                }
            }
            catch { }
        }
    }
}
